package org.tissou.server.Operations;

import org.tissou.client.Services.MonException;
import org.tissou.client.Services.*;

import java.util.Date;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Claire
 * Date: 11-Jan-2009
 * Time: 15:16:41
 * To change this template use File | Settings | File Templates.
 */
public class Operation_Depense extends Operation_Courante {

  public Operation_Depense(Date date, Compte compte, CategorieInfos categorie, String libelle,
                           Float somme, boolean verifie, List<Dette> dettes) {
    super(date, compte, categorie, libelle, somme, verifie, dettes);
    TypeTransaction_Nom = "Operation Depense";
  }


 //Operation_Depense:
//  Date Date = date;
//  Boolean Verifie = verifie;
//  OperationFactoryInfos.TypeOperation Typeoperation = OPERATION_DEPENSE;
//
//  List<CategorieInfos> Categories = categorie selectionnee dans l'arbre
//  List<ProprietaireInfos> Proprietaires = void;
//  List<Compte> Comptes = Compte concerne;
//  List<String> Libelles = new ArrayList<String>() = libelle;
//  List<Dette> Dettes = new ArrayList<Dette>() = dettes (Crediteur, Debiteur, Somme due)
// (pas de restriction de nombre);
//  List<MonnaieInfos> Monnaies = new ArrayList<MonnaieInfos>() = void;
//  List<Float> Sommes = new ArrayList<Float>() = somme concernee;
//

  private static Operation_Depense ConstruireAvecParametres_Construction(Parametres parametres) {
    return new Operation_Depense(parametres.getDate(),
        parametres.getComptes().get(0),
        parametres.getCategories().get(0),
        parametres.getLibelles().get(0),
        parametres.getSommes().get(0),
        parametres.getVerifie(),
        parametres.getDettes()
    );
  }

  public static Operation_Depense ConstruireAvecParametres(Parametres parametres){
    if(ConstruireAvecParametres_Compatibilite(parametres)){
      return ConstruireAvecParametres_Construction(parametres);
    }
    else
      throw new MonException("Les parametres ne sont pas compatibles pour creer cette operation.");
  }




  public Float getSommePrincipale(){
    return -Somme;
  }

  public ProprietaireInfos getPrincipal(Dette dette){
    return dette.getCrediteur();
  }

  public Float getSommeDettePersonnePrincipale(Dette dette){
    return dette.getSommeDue();
  }

  public ProprietaireInfos getTiers(Dette dette){
    return dette.getDebiteur();
  }
}
